home *** CD-ROM | disk | FTP | other *** search
/ Revolution - Das Atari CD Magazin 1997 / Revolution - Das Atari CD Magazin 1.iso / software / anwendng / utility / gemlabel / module.prj / stc.ltc / modul.c < prev    next >
C/C++ Source or Header  |  1996-07-21  |  8KB  |  312 lines

  1. /*
  2.     Dies ist der Startupcode für ein GEMLABEL-Modul in C !
  3.     Er wurde für LATTICE C 5.6 erstellt, sollte aber auf
  4.     allen anderen Compilern auch laufen
  5.  
  6.     Mit diesem Startupcode können Load-/Save-/Print- oder
  7.     Draw-Module für GEMLABEL 1.XX erstellt werden
  8.  
  9.     Angefangen     : 14.04.1995
  10.     Letzte Änderung: 01.05.1995
  11. */
  12.  
  13. /*
  14.     INCLUDE-Dateien
  15. */
  16. #include <stdio.h>
  17. #include <stdlib.h>
  18. #include <conio.h>
  19. #include <string.h>
  20. #include <basepage.h>
  21. #include <aes.h>
  22. #include <vdi.h>
  23. #include "glm.h"
  24.  
  25. /*
  26.     Hier steht der Modultyp (GLOAD/GSAVE/GDRAW/GPRTR)
  27. */
  28. #define MODUL GDRAW
  29. /*
  30.     Globale Variablen
  31. */
  32. char com[200];
  33. int i,ret,ap_id;
  34. short work_in[11]={ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 };
  35. short work_out[57];
  36. short handel;
  37. /* 
  38.     Basepagepointer für den Zugriff auf die
  39.     Kommandozeile
  40. */
  41. extern BASEPAGE *_pbase;
  42. /*
  43.     Bei Load/Save-Modul Platz für Dateinamen
  44. */
  45. #if (( MODUL == GSAVE ) || ( MODUL == GLOAD ))
  46. char mfile[200]; 
  47. #endif
  48. /* 
  49.     Bei Draw-Modulen: Clipping-Koordinaten
  50. */
  51. #if ( MODUL == GDRAW )
  52. struct ckor__
  53. {
  54.     int x;
  55.     int y;
  56.     int w;
  57.     int h;
  58. }clipping;
  59. short pxarray[4];
  60. #endif
  61. /*
  62.     Ersetzen Sie Modulbeschreibung durch ihren Modulnamen,
  63.     der später von GEMLABEL angezeigt werden soll.
  64.     Die Modulbeschreibung darf nicht länger als 40 Zeichen sein
  65.     und muß mit '¯' abgeschlossen sein
  66. */
  67. #if ( MODUL == GLOAD )
  68. char modulname[]="GLBLMODLLOAD Modulbeschreibung¯";
  69. #endif
  70. #if ( MODUL == GSAVE )
  71. char modulname[]="GLBLMODLSAVE Modulbeschreibung¯";
  72. #endif
  73. #if ( MODUL == GPRTR )
  74. char modulname[]="GLBLMODLPRTR Modulbeschreibung¯";
  75. #endif
  76. #if ( MODUL == GDRAW )
  77. char modulname[]="GLBLMODLDRAW Modulbeschreibung¯";
  78. #endif
  79.  
  80. /*
  81.     Funktionsprototypen
  82. */
  83. void glm_mod(void);
  84. void tmodul(char);
  85. void modul (void);
  86. void wmodul(void);
  87.  
  88. int main(int argc, char *argv[], char *envp[] )
  89. {
  90.     register int i;
  91.     char *clm_lin, *glmver;
  92.     clm_lin = _pbase->p_cmdlin;
  93.     if ( *clm_lin > 0)
  94.     {
  95.         clm_lin++;
  96.         for ( i=0 ; i < 128 ; i++ , clm_lin++ )
  97.         {
  98.             com[i] = *clm_lin;
  99.         }
  100.         if (( com[0] == 0x47 ) && ( com[1] == 0x4c ) && ( com[2] == 0x4d ) 
  101. #if ( MODUL == GDRAW )
  102.         && ( argc >= 4) ) /* Diese Bedingung trifft nur bei Draw-Modulen zu */
  103. #else
  104.         ) /* Bei anderen Modulen wird Sie nicht benötigt */
  105. #endif
  106.         {
  107.         /*
  108.             Bei Load/Save-Modulen Dateinamen ermitteln
  109.         */
  110. #if ( (MODUL == GLOAD ) || (MODUL == GSAVE) )
  111.             strcpy( mfile , &com[4] );
  112. #endif
  113.         /*
  114.             Bei Draw-Modulen Clipping-Koordinaten ermitteln
  115.         */
  116. #if ( MODUL == GDRAW )
  117.         /* 
  118.             Clipping-Koordinaten aus der Kommandozeile auslesen
  119.         */
  120.             clipping.x=atoi( argv[2] );
  121.             clipping.y=atoi( argv[3] );
  122.             clipping.w=atoi( argv[4] );
  123.             clipping.h=atoi( argv[5] );
  124. #endif
  125.             tmodul( com [3] );
  126.             /*
  127.                 So können Sie bei Bedarf die GEMLABEL-Versionsnummer
  128.                 ermitteln ( Inhalt der Environment-Variable GLMVER )
  129.                 (Evt. wichtig für Versionsabfragen)
  130.             */
  131.             glmver = getenv("GLMVER");
  132.             if ( glmver == NULL )
  133.                 printf(" Keine GLMVER-Environment-Variable\n");
  134.             else
  135.                 printf(" GEMLABEL Version %s\n",glmver);
  136.             /*
  137.                 Umwandeln in int  : atoi( glmver );
  138.                 Umwandeln in long : atol( glmver );
  139.                 Der Programmstatus (Freeware/Shareware) geht 
  140.                 dabei verloren
  141.             */
  142. #if ( MODUL == GDRAW )
  143.             /*
  144.                 Die Clipping-Koordinaten können von GEMLABEL
  145.                 auch im Environment übergeben werden
  146.                 ( nur Draw-Module ! )
  147.                 Fehlen diese, ist man auf die Werte in der
  148.                 Kommandozeile angewiesen
  149.             */
  150.             glmver = getenv("GXCLIP");
  151.             if ( glmver == NULL )
  152.                 printf(" Keine Clipping-X-Koordinaten im Environment ! \n");
  153.             else
  154.                 printf(" Clipping-X im Env.: %s\n",glmver);glmver = getenv("GWCLIP");
  155.             glmver = getenv("GYCLIP");
  156.             if ( glmver == NULL )
  157.                 printf(" Keine Clipping-Y-Koordinaten im Environment ! \n");
  158.             else
  159.                 printf(" Clipping-Y im Env.: %s\n",glmver);
  160.             glmver = getenv("GWCLIP");
  161.             if ( glmver == NULL )
  162.                 printf(" Keine Clipping-W-Koordinaten im Environment ! \n");
  163.             else
  164.                 printf(" Clipping Breite im Env.: %s\n",glmver);
  165.             glmver = getenv("GHCLIP");
  166.             if ( glmver == NULL )
  167.                 printf(" Keine Clipping-H-Koordinaten im Environment ! \n");
  168.             else
  169.                 printf(" Clipping Höhe im Env.: %s\n",glmver);
  170. #endif
  171.         }
  172.         else
  173.             glm_mod();
  174.     }
  175.     else
  176.     {
  177.         glm_mod();
  178.     }
  179.     return(0);
  180. }
  181. /*
  182.     In der Procedure void modul(void) steht ihr Modul
  183. */
  184. void modul(void)
  185. {
  186.     short junk;
  187.  
  188.     handel = graf_handle( &junk, &junk, &junk, &junk);
  189.     v_opnvwk( work_in , &handel, work_out ); 
  190.     if ( handel ) /* Nur weitermachen, wenn wir ein VDI-Handel kriegen */
  191.     {
  192.         /*
  193.  
  194.             *************************************************
  195.             * Hier fängt ihr Modul an                        *
  196.             * Es ist bei der AES und beim VDI angemeldet    *
  197.             * AES-Handel: int ap_id                            *
  198.             * VDI-Handel: short handel                        *
  199.             *************************************************
  200.  
  201.             Damit hier etwas steht, geben wir eine Meldung aus
  202.         */
  203.         printf(" Hier steht das Modul\n");
  204.         /*
  205.             Bei LOAD/SAVE-Modulen wird noch der Dateiname angezeigt
  206.         */
  207. #if (( MODUL == GLOAD ) || ( MODUL == GSAVE ) )
  208.         printf(" Dateiname: %s\n",mfile);
  209. #endif
  210.         /*
  211.             Bei Draw-Modulen Clipping zeigen wir das Clipping an
  212.         */
  213. #if ( MODUL == GDRAW )
  214.         printf(" Clipping:\n");
  215.         printf(" X: %d\n",clipping.x);
  216.         printf(" Y: %d\n",clipping.y);
  217.         printf(" W: %d\n",clipping.w);
  218.         printf(" H: %d\n",clipping.h);
  219.         /*
  220.             Und Clipping setzen
  221.         */
  222.         pxarray[0] = clipping.x;
  223.         pxarray[1] = clipping.y;
  224.         pxarray[2] = clipping.w;
  225.         pxarray[3] = clipping.h;
  226.         vs_clip( handel, 1 , pxarray );
  227. #endif
  228.     /*
  229.         *************************************************
  230.         * Hier hört iht Modul auf                        *
  231.         * Es wird beim VDI und AES abgemeldet !            *
  232.         *************************************************
  233.     */
  234.     v_clsvwk( handel ); /* Und Handel wieder freigeben */
  235.     }
  236.     else
  237.     {
  238.         /*
  239.             Wir haben kein VDI-Handel bekommen:
  240.             Fehlermeldung
  241.         */
  242.         form_alert(1,"[3][ | Konnte VDI-Workstation nicht | öffnen ! Kein Handel mehr frei ! ][Abbruch]");
  243.     }
  244. }
  245.  
  246. void glm_mod(void)
  247. {
  248.     printf("\n");
  249.     /*
  250.         Hier ihr Modulname, Version und Datum
  251.     */
  252.     printf(" GEMLABEL-Modul in C Version 1.10 01.05.95 \n");
  253.     /*
  254.         Hier kommt ihr Name rein
  255.     */
  256.     printf(" Written by Volker Janzen                  \n");
  257.     printf("\n");
  258.     printf(" Dies ist ein Modul für GEMLABEL und       \n");
  259.     /*
  260.         Hier kommt ein Copyrighthinweis oder die Meldung,
  261.         daß dieses Modul FREEWARE/ SHAREWARE ist, hin
  262.     */
  263.     printf(" Copyrighthinweis oder FREEWARE/SHAREWARE  \n");
  264.     printf(" Es kann nur von GEMLABEL gestartet werden \n");
  265.     printf("\n");
  266.     printf(" GEMLABEL written 1995 by Volker Janzen    \n");
  267.     printf("\n");
  268.     printf("-Taste-\n");
  269.     getch();
  270. }
  271.  
  272. void tmodul(char t)
  273. {
  274.     ap_id = appl_init();
  275.     if ( ap_id == -1 )
  276.     {
  277.         printf(" Fehler bei Appl_Init: Keine AES-ID ! \n");
  278.         printf("-Taste-\n");
  279.         getch();
  280.     }
  281.     else
  282.     {
  283.         if ( t == MODUL )
  284.             modul();
  285.         else
  286.             wmodul();
  287.         appl_exit();
  288.     }
  289. }
  290. /*
  291.         Diese Procedure wird aufgerufen, wenn dieses Modul
  292.         etwas anderes machen soll, als das, wofür es be-
  293.         stimmt ist ( Es soll z.B. speichern statt drucken )
  294. */
  295. void wmodul(void)
  296. {
  297.     char alert[200];
  298. #if ( MODUL == GDRAW )
  299.     char modultyp[]="Draw";
  300. #endif
  301. #if ( MODUL == GPRTR )
  302.     char modultyp[]="Druck";
  303. #endif
  304. #if ( MODUL == GLOAD )
  305.     char modultyp[]="Load";
  306. #endif
  307. #if ( MODUL == GSAVE )
  308.     char modultyp[]="Save";
  309. #endif
  310.     sprintf(alert,"[3][ | Dies ist ein | GEMLABEL-%s-Modul ! ][Abbruch]",modultyp);
  311.     form_alert( 1 , alert );
  312. }